package models

import (
	"context"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/primitive"
	"go.mongodb.org/mongo-driver/mongo"
)

type Order struct {
	Id            string `bson:"_id,omitempty" json:"id"`
	PayOrderTime  int64  `bson:"payOrderTime" json:"payOrderTime"` //下单时间
	ProductName   string `bson:"productName" json:"productName"`
	OrderDuration int    `bson:"orderDuration" json:"orderDuration"` //订单时长
	Amount        string `bson:"amount" json:"amount"`               //金额
	PayType       string `bson:"payType" json:"payType"`             //支付方式
	OrderStatus   uint   `bson:"orderStatus" json:"orderStatus"`     //1 待支付 2.支付成功 3.支付失败 4.取消支付 5.等待确认
	MaturityTime  int64  `bson:"maturityTime" json:"maturityTime"`   //到期时间
	UserId        string `bson:"userId" json:"userId"`
	WatchAddress  string `bson:"watchAddress" json:"watchAddress"` //监听地址  用于回调时和订单关联
	ProductId     string `bson:"productId" json:"productId"`
	OrderNo       string `bson:"orderNo" json:"orderNo"` //订单编号 没存数据库里 就是md5加密
}

func (o *Order) Update(orderClient *mongo.Collection, orderId primitive.ObjectID, order Order) error {

	update := bson.M{"$set": bson.M{"orderStatus": order.OrderStatus}}
	_, err := orderClient.UpdateOne(context.TODO(), bson.M{"_id": orderId}, update)
	if err != nil {
		return err
	}
	return nil
}
